package com.yaodian100.ec.payment.entity;

import java.math.BigDecimal;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.GenericGenerator;
import org.hibernate.annotations.Parameter;

import com.yaodian100.core.common.entity.BaseEntity;

@Entity
@Table(name = "EC_BANK_TRANSFER")
public class BankTransfer extends BaseEntity {

	private static final long serialVersionUID = -32914938648580676L;

	/**
	 * 系統流水號
	 */
	@Id
	@GeneratedValue(generator = "seq_ec_bank_transfer")
	@GenericGenerator(name = "seq_ec_bank_transfer", strategy = "com.yaodian100.core.common.dao.hibernate.SeqStringGenerator", parameters = {
			@Parameter(name = "sequence", value = "seq_ec_bank_transfer"),
			@Parameter(name = "pattern", value = "BKT0000000000") })
	@Column(name = "ID", length = 20)
	private String id;

	/**
	 * 匯款來源銀行
	 */
	@Column(name = "source_bank", length = 40, nullable = false)
	private String sourceBank;

	/**
	 * 匯款來源帳戶號碼
	 */
	@Column(name = "source_account_no", length = 40)
	private String sourceAccountNo;

	/**
	 * 匯款來源帳戶名稱
	 */
	@Column(name = "source_account_name", length = 40, nullable = false)
	private String sourceAccountName;

	/**
	 * 匯款金額
	 */
	@Column(name = "amount", nullable = false, columnDefinition = "numeric(10,2)")
	private BigDecimal amount;

	/**
	 * 訂單編號
	 */
	@Column(name = "order_id", length = 13)
	private String orderId;

	/**
	 * 匯款日期時間匯款日期時間
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "bill_date", nullable = false)
	private Date billDate;

	/**
	 * 是否對帳成功
	 */
	@Column(name = "status", length = 3, nullable = false)
	private String status;

	/**
	 * 内部备注
	 */
	@Column(name = "memo", length = 300)
	private String memo;
	/**
	 * 收款資料鍵入日期時間
	 */
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "data_entry_date", nullable = false)
	private Date dataEntryDate;

	@Column(name = "data_entry_man", length = 40, nullable = false)
	private String dataEntryMan;

	@Column(name = "bank_memo", length = 40)
	private String bankMemo;

	@Column(name = "bank_seq", length = 40)
	private String bankSeq;

	/**
	 * 匯款來源(郵局、銀行)
	 */
	@Column(name = "source_remit", length = 10, nullable = false)
	private String sourceRemit;

	public BigDecimal getAmount() {
		return amount;
	}

	public String getBankMemo() {
		return bankMemo;
	}

	public Date getBillDate() {
		return billDate;
	}

	public Date getDataEntryDate() {
		return dataEntryDate;
	}

	public String getDataEntryMan() {
		return dataEntryMan;
	}

	public String getId() {
		return id;
	}

	public String getMemo() {
		return memo;
	}

	public String getOrderId() {
		return orderId;
	}

	public String getSourceAccountName() {
		return sourceAccountName;
	}

	public String getSourceAccountNo() {
		return sourceAccountNo;
	}

	public String getSourceBank() {
		return sourceBank;
	}

	public String getSourceRemit() {
		return sourceRemit;
	}

	public String getStatus() {
		return status;
	}

	public void setAmount(BigDecimal amount) {
		this.amount = amount;
	}

	public void setBankMemo(String bankMemo) {
		this.bankMemo = bankMemo;
	}

	public void setBillDate(Date billDate) {
		this.billDate = billDate;
	}

	public void setDataEntryDate(Date dataEntryDate) {
		this.dataEntryDate = dataEntryDate;
	}

	public void setDataEntryMan(String dataEntryMan) {
		this.dataEntryMan = dataEntryMan;
	}

	public void setId(String id) {
		this.id = id;
	}

	public void setMemo(String memo) {
		this.memo = memo;
	}

	public void setOrderId(String orderId) {
		this.orderId = orderId;
	}

	public void setSourceAccountName(String sourceAccountName) {
		this.sourceAccountName = sourceAccountName;
	}

	public void setSourceAccountNo(String sourceAccountNo) {
		this.sourceAccountNo = sourceAccountNo;
	}

	public void setSourceBank(String sourceBank) {
		this.sourceBank = sourceBank;
	}

	public void setSourceRemit(String sourceRemit) {
		this.sourceRemit = sourceRemit;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getBankSeq() {
		return bankSeq;
	}

	public void setBankSeq(String bankSeq) {
		this.bankSeq = bankSeq;
	}

}